csstypes: Propagate NTH_CHILD and NTH_LAST_CHILD to siblings
authorBenjamin Otte <otte@redhat.com>
Mon, 9 Nov 2015 00:38:39 +0000 (01:38 +0100)
committerBenjamin Otte <otte@redhat.com>
Mon, 9 Nov 2015 00:48:14 +0000 (01:48 +0100)
Otherwise, we'd have to mark eveyr child on changes, and it's far easier
to do that once we actually validate.

gtk/gtkcsstypes.c

index e14ab2ce1cc0854a65b1b8eeba7b853fb9b706cc..2e93cbca56b7db4e147ff3b395cdd044b1b2b83b 100644 (file)
@@ -34,11 +34,16 @@ _gtk_css_change_for_sibling (GtkCssChange match)
                     | GTK_CSS_CHANGE_NTH_LAST_CHILD \
                     | GTK_CSS_CHANGE_STATE )
 
+#define KEEP_STATES ( ~(BASE_STATES|GTK_CSS_CHANGE_SOURCE|GTK_CSS_CHANGE_PARENT_STYLE) \
+                    | GTK_CSS_CHANGE_NTH_CHILD \
+                    | GTK_CSS_CHANGE_NTH_LAST_CHILD)
+
 #define SIBLING_SHIFT 8
 
-  return (match & ~(BASE_STATES|GTK_CSS_CHANGE_SOURCE|GTK_CSS_CHANGE_PARENT_STYLE)) | ((match & BASE_STATES) << SIBLING_SHIFT);
+  return (match & KEEP_STATES) | ((match & BASE_STATES) << SIBLING_SHIFT);
 
 #undef BASE_STATES
+#undef KEEP_STATES
 #undef SIBLING_SHIFT
 }